#pragma once


#ifndef MY_PARENT_CLASS

#define MY_PARENT_CLASS

#include <iostream>
#include "tool.h"

class Parent {

public:

	Parent();

	virtual ~Parent();
 
	virtual std::string encrypt(std::string content, EVP_PKEY * pub);

	virtual std::string decrypt(std::string encodedMessage, EVP_PKEY* privateKey);

	virtual std::string sign(std::string message, EVP_PKEY* privateKey);

	virtual bool verify(std::string message, std::string signStr, EVP_PKEY* publicKey);

	virtual EVP_PKEY * getPublicKey(std::string publicKeyPath);

	virtual EVP_PKEY* getPrivateKey(std::string privateKeyPath);

	bool equalEvpPkey(EVP_PKEY* pkey1, EVP_PKEY* pkey2);

};

#endif